
// engine prototype
// 2011. 08-09 
// made by Lunatic Lina

#ifndef _L_3D_ENGINE_H_
#define _L_3D_ENGINE_H_

// define api type
#define L3D_TYPE_WIN32   0
#define L3D_TYPE_DX		 1
#define L3D_TYPE_GL		 2

// error define
#define ERR_BASE			(-16384)
#define DEFINE_ERR(A)		(ERR_BASE-(A))
#define ERR_INIT_FAIL		(DEFINE_ERR(1))
#define ERR_AREADY_INITED	


#include "..\..\LunarLib\include\Util.h"
#include "..\..\LunarLib\include\3DDefine.h"
#include <Windows.h>

class DLL_API	L3DEngine
{
public:
	virtual ~ L3DEngine() {}

	// Initializing
	virtual int			Init3D(HWND hWnd) = 0;
	virtual int			Release3D() = 0;
	virtual int			GetDeviceCount() = 0;
	virtual int			GetCurrentDevice() = 0;
	
	// rendering
	virtual int			Clear(int r, int g, int b) = 0;
	virtual int			Begin3D() = 0;
	virtual int			End3D() = 0;


	// text related
	virtual int			PaintText(char* txt, int x, int y) = 0;

	// camera related
	virtual	CAMERA*		GetCamera() = 0;
	virtual	void		SetCamera() = 0;

	// light related


	
};

#endif

